Subclassing Python's type type
In my last post I checked out the type() function with three parameters, which dynamically creates new classes. Now I wonder what happens when you use it to create a subclass of the class type. By the way, you can also use the boring class A(...): syntax to achieve the same thing.
I also can’t think of any practical use for this 😅:
new_type = type("new_type", (type,), {})As expected, the new type has the following properties. It is not the same as type, it is a subclass of type and an instance of type:
>>> new_type == type
False
>>> isinstance(new_type, type)
True
>>> issubclass(new_type, type)
TrueFuthermore, both are really just types:
>>> type(new_type) == type(type) == type
TrueAnd the new_type type also acts as a function that creates new classes:
>>> new_str = new_type("new_str", (str,), {})
>>> type(new_str)
<class '__main__.new_type'>
>>> type(new_str) == type
False
>>> type(new_str) == new_type
TrueOK, my brain hurts, let’s stop this madness.